package com.fengqilin.projectlplc;

import android.os.Handler;

public class PollingManager {
    Client.Callback callback;
    long startTimes;
    private final Handler handler = new Handler();
    private final Runnable pollingTask = new Runnable() {
        @Override
        public void run() {
            // 执行轮询的逻辑
            if (isPollingAllowed()) {
                // 假设这里检查是否有新任务，如果有则设置isPolling为false
                if (callback != null && !Client.isRunning && System.currentTimeMillis() - startTimes > POLLING_INTERVAL) {
                    Client.requestAll(callback);
                    startTimes = System.currentTimeMillis();
                }
                // 如果没有任务，或者任务已处理完，继续轮询
                // handler.postDelayed(this, POLLING_INTERVAL); // POLLING_INTERVAL是轮询间隔，例如1000毫秒
            }
        }
    };

    private boolean isPolling = true;
    private static final int POLLING_INTERVAL = 500; // 1秒

    public void startPolling() {
        if (isPolling) {
            handler.postDelayed(pollingTask, POLLING_INTERVAL);
        }
    }

    public void stopPolling() {
        isPolling = false;
        handler.removeCallbacks(pollingTask);
    }

    public void resumePolling() {
        isPolling = true;
        startPolling(); // 或者直接在这里调用pollingTask.run()，取决于你的需求
    }

    private boolean isPollingAllowed() {
        // 这里应该添加你的逻辑来判断是否应该继续轮询
        // 例如，检查是否有新任务等待处理
        // 返回true表示允许轮询，返回false表示暂停轮询
        return isPolling;
    }
}